package types

type GoodsTotalCategory struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}
type GoodsTotalCategoryList struct {
	List []GoodsTotalCategory `json:"list"`
}

type GoodsTotalCategoryResp struct {
	Data GoodsTotalCategoryList `json:"data"`
	Resp
}

type GoodsCategory struct {
	ID           int    `json:"id"`
	CategoryName string `json:"categoryName"`
}
type GoodsCategoryList struct {
	List []GoodsCategory `json:"list"`
}
type GoodsCategoryResp struct {
	Data GoodsCategoryList `json:"data"`
	Resp
}

type OrganizeGoodsList struct {
	List  []OrganizeGoodsItem `json:"list"`  //商品列表
	Total int64               `json:"total"` //商品总数
}

type OrganizeGoodsItem struct {
	Id                int64  `json:"id"`                //goodswithSpecId"` //商品规格id
	GoodsId           int64  `json:"goodsId"`           //商品Id
	MyCode            string `json:"myCode"`            // 自定义编码
	ProducerGoodsCode string `json:"producerGoodsCode"` // 商品规格编码
	IsCustomized      int32  `json:"isCustomized"`      // 是否为定制化商品
	Spelling          string `json:"spelling"`          // 拼音码
	GoodsImg          string `json:"goodsImg"`          // 商品图片
	BrandName         string `json:"brandName"`         // 品牌名称
	CategoryName      string `json:"categoryName"`      // 分类名称
	TypeName          string `json:"typeName"`          // 商品类型名称
	GoodsTitle        string `json:"goodsTitle"`        // 商品标题
	TypeId            int64  `json:"typeId"`            // 商品类型Id
	GoodsPrice        int64  `json:"goodsPrice"`        // 商品价格
	ProducerGoodsId   int64  `json:"producerGoodsId"`   // 商品规格id
	SpecsDescription  string `json:"specsDescription"`  //规格描述
	SupplierName      string `json:"supplierName"`      // 供应商名称
	Description       string `json:"description"`       // 商品个性化标签描述
	Inventory         int64  `json:"inventory"`         // 自己仓库库存数量
	SupplierInventory int64  `json:"supplierInventory"` //供应商库存
}

type OrganizeGoodsResp struct {
	Data OrganizeGoodsList `json:"data"`
	Resp
}

type GoodsListByDictTypeReq struct {
	GeneralId          int64            `json:"generalId"`                   //通用类Id
	CategoryId         int64            `json:"categoryId,optional"`         //分类Id
	StoreId            int64            `json:"storeId,optional"`            //仓库id
	KeyWord            string           `json:"keyword,optional"`            //搜索关键字
	Ids                []int64          `json:"ids,optional"`                //商品id数组
	SpecsList          []GoodsSpecsItem `json:"specsList,optional"`          //规格列表
	ParentId           int64            `json:"parentId,optional"`           //父级id
	SupplierOrganizeId int64            `json:"supplierOrganizeId,optional"` //供应商组织机构id
	Page               int64            `json:"page"`                        //页码
	PageSize           int64            `json:"pageSize"`                    //每页数量
	//DictData           []GoodsDictionaryItem `json:"list,optional"`

}
type GoodsSpecsItem struct {
	Id        int64                 `json:"id,optional"` //规格id
	SpecsName string                `json:"specsName"`   //规格名称
	List      []GoodsSpecsValueItem `json:"list"`        //规格值列表
}
type GoodsSpecsValueItem struct {
	Id             int64  `json:"id,optional"`    //规格值id
	SpecsValueName string `json:"specsValueName"` //规格值名称
}

type GetGlassesStoreOrderListReqForApi struct {
	Page              int64  `form:"page" validate:"required,gt=0"`     // 页码
	PageSize          int64  `form:"pageSize" validate:"required,gt=0"` // 每页数量
	Status            int32  `form:"status" validate:"omitempty"`       // 销售单状态(1草稿2未完成3已完成4作废)
	CustomerInfo      string `form:"customerInfo" validate:"omitempty"` //过滤用户名和手机号
	OrderCode         string `form:"orderCode" validate:"omitempty"`
	StartDate         int64  `form:"startDate" validate:"omitempty"`
	EndDate           int64  `form:"endDate" validate:"omitempty"`
	CheckListId       uint64 `form:"checkListId" validate:"omitempty"`                                   // 检查单ID
	CustomerId        uint64 `form:"customerId" validate:"omitempty"`                                    // 客户ID
	IsPaymentRequired int32  `json:"isPaymentRequired" validate:"omitempty"`                             //可选，是否需要支付（1需要，2不需要）
	OrganId           uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type OrderWithCustomerForListForApiList struct {
	List  []OrderWithCustomerForListForApi `json:"list"`  //商品列表
	Total int64                            `json:"total"` //商品总数
}

type OrderWithCustomerForListForApiListResp struct {
	Data OrderWithCustomerForListForApiList `json:"data"`
	Resp
}

type OrderWithCustomerForListForApi struct {
	Id                uint64 `json:"id"`           // 眼镜店销售单ID
	OrderCode         string `json:"orderCode"`    // 销售单号
	TotalAmount       int64  `json:"totalAmount"`  // 标准总价
	PaidAmount        int64  `json:"paidAmount"`   // 应收金额
	Discount          int64  `json:"discount"`     // 直减
	Quantity          int64  `json:"quantity"`     // 数量
	Status            int32  `json:"status"`       // 销售单状态(0待付款,1已付款), 确定后不让修改
	Remark            string `json:"remark"`       // 备注
	CustomerName      string `json:"customerName"` // 客户名字
	CustomerTel       string `json:"customerTel"`  // 客户电话
	IsProcess         int32  `json:"isProcess"`    // 是否需要加工
	CheckListId       uint64 `json:"checkListId" validate:"omitempty"`
	CheckCode         string `json:"checkCode" validate:"omitempty"` // 可选，检查单编号
	CreatedAt         int64  `json:"createdAt"`                      // 订单创建时间
	UpdatedAt         int64  `json:"updatedAt"`                      // 订单更新时间
	BusinessUserId    uint64 `json:"businessUserId"`                 // 业务员ID
	BusinessUserName  string `json:"businessUserName"`               // 业务员名称
	BusinessTime      int64  `json:"businessTime"`                   // 业务时间
	EyeType           int32  `json:"eyeType"`
	CustomerId        uint64 `json:"customerId"`                                  // 客户ID
	IsPaymentRequired int32  `json:"isPaymentRequired"`                           //是否需要支付（1需要，2不需要）
	ActualAmount      int64  `json:"actualAmount"`                                // 实际支付金额
	VipDiscount       int64  `json:"vipDiscount" validate:"omitempty,gte=0"`      // 可选，VIP优惠金额，大于等于0
	SubTotalDiscount  int64  `json:"subTotalDiscount" validate:"omitempty,gte=0"` // 可选，分项优惠总额
	ReceivableAmount  int64  `json:"receivableAmount" validate:"omitempty,gte=0"` // 可选，应收总额（未计算直减）
	TotalDiscount     int64  `json:"totalDiscount" validate:"omitempty,gte=0"`    // 可选，整单直减
}

type OrderItemForApi struct {
	Id              uint64   `json:"id"`
	Count           int64    `json:"count" validate:"required,gt=0"`                       // 必传，数量
	GoodId          uint64   `json:"goodId" validate:"required,gt=0"`                      // 必传，商品ID
	GoodsTitle      string   `json:"goodsTitle" validate:"required"`                       // 必传，商品名称
	PriceAtOrder    int64    `json:"priceAtOrder" validate:"required,gt=0"`                // 必传，销售金额
	Discount        int64    `json:"discount,optional"`                                    // 可选，折扣
	Amount          int64    `json:"amount" validate:"required,gt=0"`                      // 必传，金额
	IgnoreStock     int32    `json:"ignoreStock" validate:"required"`                      // 必传，是否忽略库存检查1忽略2否
	Codes           []string `json:"codes" validate:"required,dive,required"`              // 可选，一物一码的数组
	EyeType         int32    `json:"eyeType" validate:"omitempty,oneof=1 2 3" msg:"左右眼类别"` //必传， 1左眼 2右眼 3综合
	GoodsId         uint64   `json:"goodsId" validate:"required"`                          // 必传，商品ID
	GoodsImgAtOrder string   `json:"goodsImgAtOrder" validate:"omitempty"`                 // 可选，商品图片
	BrandName       string   `json:"brandName" validate:"omitempty"`                       // 可选，品牌名称
	CategoryName    string   `json:"categoryName" validate:"omitempty"`                    // 可选，分类名称
	TypeName        string   `json:"typeName" validate:"omitempty"`                        // 可选，类型名称
	GoodsCode       string   `json:"goodsCode" validate:"omitempty"`                       // 可选，商品编号
	GoodsSpecId     uint64   `json:"goodsSpecId" validate:"required"`                      //必传，规格ID
	GoodsSpecName   string   `json:"goodsSpecName" validate:"required"`                    // 必传，规格名称
	Spelling        string   `json:"spelling" validate:"omitempty"`                        // 可选，拼音码
	Description     string   `json:"description" validate:"omitempty"`                     // 可选，标签
	VipDiscountRate int64    `json:"vipDiscountRate" validate:"omitempty"`                 // 可选，VIP折扣比例
	SubItemDiscount int64    `json:"subItemDiscount" validate:"omitempty"`                 // 可选，分项优惠
	HasReturnOrder  bool     `json:"hasReturnOrder" validate:"omitempty"`                  // 该商品是否存在退单（true=有退单，false=无退单）
	ReturnQuantity  int64    `json:"returnQuantity"`                                       //已退货数量
	NowCodes        []string `json:"nowCodes"`                                             //现有codes
}

type GetGlassesStoreOrderDetailRespForApi struct {
	Id                uint64            `json:"id"`
	OrderCode         string            `json:"orderCode"`
	TotalAmount       int64             `json:"totalAmount"` //标准总价
	PaidAmount        int64             `json:"paidAmount"`  //应收金额
	Discount          int64             `json:"discount"`    //直减
	Quantity          int64             `json:"quantity"`
	Status            int32             `json:"status"`
	Remark            string            `json:"remark"`
	CustomerId        uint64            `json:"customerId"`
	CustomerName      string            `json:"customerName"`
	CustomerTel       string            `json:"customerTel"`
	CreatedAt         int64             `json:"createdAt"`
	UpdatedAt         int64             `json:"updatedAt"`
	IsProcess         int32             `json:"isProcess"`
	CheckListId       uint64            `json:"checkListId" validate:"omitempty"`
	CheckCode         string            `json:"checkCode" validate:"omitempty"` // 可选，检查单编号
	Items             []OrderItemForApi `json:"items"`
	BusinessUserId    uint64            `json:"businessUserId"`                              // 业务员ID
	BusinessUserName  string            `json:"businessUserName"`                            // 业务员名称
	BusinessTime      int64             `json:"businessTime"`                                // 业务时间
	IsPaymentRequired int32             `json:"isPaymentRequired"`                           //是否需要支付（1需要，2不需要）
	ActualAmount      int64             `json:"actualAmount"`                                // 实际支付金额
	VipDiscount       int64             `json:"vipDiscount"`                                 // 可选，VIP优惠金额，大于等于0
	SubTotalDiscount  int64             `json:"subTotalDiscount" validate:"omitempty,gte=0"` // 可选，分项优惠总额
	ReceivableAmount  int64             `json:"receivableAmount" validate:"omitempty,gte=0"` // 可选，应收总额（未计算直减）
	TotalDiscount     int64             `json:"totalDiscount" validate:"omitempty,gte=0"`    // 可选，整单直减
}

type GetGlassesStoreOrderDetailRespForApiResp struct {
	Data GetGlassesStoreOrderDetailRespForApi `json:"data"`
	Resp
}

type GoodsQueryParams struct {
	Spelling   string `form:"spelling,optional"`   //拼音
	MyCode     string `form:"myCode,optional"`     //自定义编码
	GoodsTitle string `form:"goodsTitle,optional"` //商品标题
	IsSelling  int32  `form:"isSelling,optional"`  //是否上架
	Page       int64  `form:"page"`                //页码
	PageSize   int64  `form:"pageSize"`            //每页数量
	BrandId    int64  `form:"brandId,optional"`    //品牌Id
	CategoryId int64  `form:"categoryId,optional"` //分类Id
	TypeId     int64  `form:"typeId,optional"`     //商品类型Id
}
type GoodsListResp struct {
	Data GoodsList `json:"data"`
	Resp
}
type GoodsList struct {
	List  []GoodsItem `json:"list"`  //商品列表
	Total int64       `json:"total"` // 商品总数
}
type GoodsItem struct {
	Id                int64  `json:"id"`                //商品Id
	MyCode            string `json:"myCode"`            //商品编码
	GoodsImg          string `json:"goodsImg"`          // 商品图片
	BrandName         string `json:"brandName"`         // 品牌名称
	CategoryName      string `json:"categoryName"`      // 分类名称
	TypeName          string `json:"typeName"`          // 商品类型名称
	Description       string `json:"description"`       // 商品描述
	GoodsTitle        string `json:"goodsTitle"`        // 商品名称
	Spelling          string `json:"spelling"`          // 拼音
	IsSelling         int32  `json:"isSelling"`         //是否上架
	CategoryId        int64  `json:"categoryId"`        //分类Id
	ProducerGoodsCode string `json:"producerGoodsCode"` // 商品规格编码
	IsCustomized      int32  `json:"isCustomized"`      // 是否为定制化商品
}

type DropDownBrandQuery struct {
	CategoryId int64 `form:"categoryId,optional"` // 品牌分类Id
}
type BrandDropDownListResp struct {
	Data BrandDropDownList `json:"data"`
	Resp
}
type BrandDropDownList struct {
	List []BrandBaseInfo `json:"list"` // 品牌列表
}

type BrandBaseInfo struct {
	Id        int64  `json:"id"`        // 品牌Id
	BrandName string `json:"brandName"` // 品牌名称
}

type GoodsQueryId struct {
	Id       int64 `form:"id"`
	ParentId int64 `form:"parentId,optional"` //父级组织机构id
}

type GoodsInfoResp struct {
	Data GoodsInfo `json:"data"`
	Resp
}
type GoodsInfo struct {
	Id           int64            `json:"id"`                   //商品Id
	GoodsImg     string           `json:"goodsImg"`             // 商品图片
	BrandName    string           `json:"brandName"`            // 品牌名称
	CategoryName string           `json:"categoryName"`         // 分类名称
	TypeName     string           `json:"typeName"`             // 商品类型名称
	BrandId      int64            `json:"brandId"`              //品牌Id
	CategoryId   int64            `json:"categoryId"`           //分类Id
	TypeId       int64            `json:"typeId"`               // 商品类型Id
	Description  string           `json:"description,optional"` // 商品描述
	SupplierId   int64            `json:"supplierId"`           //供应商Id
	SupplierName string           `json:"supplierName"`         // 供应商名称
	Weight       int32            `json:"weight,optional"`      // 重量
	GeneralId    int32            `json:"generalId"`            // 大类Id
	IsSelling    int32            `json:"isSelling"`            //是否上架
	GoodsPrice   int64            `json:"goodsPrice"`           // 商品价格
	GoodsTitle   string           `json:"goodsTitle"`           // 商品名称
	MyCode       string           `json:"myCode"`               // 自定义编码
	Spelling     string           `json:"spelling"`             // 拼音
	IsCustomized int32            `json:"isCustomized"`         // 是否为定制化商品
	IsModified   int32            `json:"isModified"`           // 是否修改
	CommonFiles  []CommonFileItem `json:"commonFiles"`          // 通用文件列表
}
type CommonFileItem struct {
	FileName string `json:"fileName"` // 文件名称
	FileUrl  string `json:"fileUrl"`  // 文件地址
	FileType string `json:"fileType"` // 文件类型
	FileExt  string `json:"fileExt"`  // 文件后缀
	FileSize int64  `json:"fileSize"` // 文件大小
}

type GoodsTypeQueryId struct {
	Id      int64 `form:"id"`               // 商品分类id
	BrandId int64 `form:"brandId,optional"` // 品牌id
}

type GoodsTypeDropDownListResp struct {
	Data GoodsTypeDropDownList `json:"data"`
	Resp
}
type GoodsTypeDropDownList struct {
	List []GoodsTypeBaseInfo `json:"list"` // 商品型号列表
}
type GoodsTypeBaseInfo struct {
	Id       int64  `json:"id"`       // 商品型号Id
	TypeName string `json:"typeName"` // 商品型号名称
}

type GoodsAddInfo struct {
	Id           int64                 `json:"id,optional"`           //商品Id
	BrandId      int64                 `json:"brandId"`               //品牌Id
	CategoryId   int64                 `json:"categoryId"`            //分类Id
	SupplierId   int64                 `json:"supplierId,optional"`   //制造商Id
	SupplierName string                `json:"supplierName,optional"` //制造商名称
	IsCustomized int32                 `json:"isCustomized,optional"` // 是否为定制化商品
	TypeId       int64                 `json:"typeId"`                //商品类型Id
	TypeName     string                `json:"typeName"`              //商品类型名称
	CategoryName string                `json:"categoryName"`          //分类名称
	BrandName    string                `json:"brandName"`             // 品牌名称
	MyCode       string                `json:"myCode"`                // 自定义编码
	GoodsTitle   string                `json:"goodsTitle"`            // 商品名称
	Spelling     string                `json:"spelling"`              // 拼音
	IsSelling    int32                 `json:"isSelling,optional"`    //是否上架
	GeneralId    int64                 `json:"generalId"`             // 通用Id
	Description  string                `json:"description"`           // 商品描述
	GoodsImg     string                `json:"goodsImg"`              // 商品图片
	List         []GoodsDictionaryItem `json:"list,optional"`         //字典列表
	CommonFiles  []CommonFileItem      `json:"commonFiles,optional"`  // 通用文件列表
}
type GoodsDictionaryItem struct {
	Id            int64               `json:"id,optional"`            //字典Id
	MultiSelect   int32               `json:"multiSelect,optional"`   //是否多选
	SelectId      int32               `json:"selectId,optional"`      //选择的字典Id
	DictMode      int32               `json:"dictMode"`               //字典模式
	DictValue     int64               `json:"dictValue,optional"`     //字典值
	DictTypeLabel string              `json:"dictTypeLabel,optional"` //字典类型名称
	DictData      []GoodsDictDataItem `json:"dictData,optional"`      //字典数据列表
	XDictData     []GoodsDictDataItem `json:"xDictData,optional"`     //字典数据列表
	YDictData     []GoodsDictDataItem `json:"yDictData,optional"`     //字典数据列表
}

type GoodsDictDataItem struct {
	Id        int64               `json:"id"`                 //字典数据Id
	Children  []GoodsDictDataItem `json:"children,optional"`  //子数据列表
	DictLabel string              `json:"dictLabel,optional"` //字典数据名称
}

type NotSalingParams struct {
	Id        int64 `json:"id"`        //商品Id
	IsSelling int32 `json:"isSelling"` //是否上架
}

type OrganizeGoodsCode struct {
	MyCode string `json:"myCode"` //商品编码
}

type OrganizeGoodsCodeResp struct {
	Data OrganizeGoodsCode `json:"data"`
	Resp
}

type GoodsSpecsList struct {
	List []GoodsSpecsItem `json:"list"` //规格列表
}

type GoodsSpecsListResp struct {
	Data GoodsSpecsList `json:"data"`
	Resp
}

type GoodsWithSpecsQuery struct {
	GoodsId   int64            `json:"goodsId"`            //商品id
	SpecsList []GoodsSpecsItem `json:"specsList,optional"` //规格列表
	Page      int64            `json:"page"`               //页码
	PageSize  int64            `json:"pageSize"`           //每页数量
}

type GoodsWithSpecsListResp struct {
	Data GoodsWithSpecsList `json:"data"`
	Resp
}

type GoodsWithSpecsList struct {
	List  []GoodsWithSpecsItem `json:"list"`  //商品列表
	Total int64                `json:"total"` //商品总数
}
type GoodsWithSpecsItem struct {
	Id          int64                 `json:"id"`         //商品id
	GoodsId     int64                 `json:"goodsId"`    //商品id
	GoodsPrice  int64                 `json:"goodsPrice"` //商品价格
	SpecsValues []int64               `json:"specsValueIds"`
	Specs       []SpecsTypeWithValues `json:"specs"` //规格列表
}

type SpecsTypeWithValues struct {
	Id             int64  `json:"id"`             //规格类型id
	SpecsName      string `json:"specsName"`      //规格名称
	SpecsValueName string `json:"specsValueName"` //规格值名称
}

type GoodsSpecAddInfo struct {
	Id         int64            `json:"id,optional"` //规格id
	GoodsId    int64            `json:"goodsId"`     //商品id
	GoodsPrice int64            `json:"goodsPrice"`  //商品价格
	SpecsList  []GoodsSpecsItem `json:"specsList"`   //规格列表
}
type GoodsSpecInfoResp struct {
	Data GoodsSpecAddInfo `json:"data"`
	Resp
}

type GoodsSpecDeleteParams struct {
	Id      int64 `json:"id"`      //规格id
	GoodsId int64 `json:"goodsId"` //商品id
}

type ProviderToOpticianInfo struct {
	Id            uint64   `json:"id,optional"`            // 眼镜店对应的供应商id
	ProviderName  string   `json:"providerName"`           // 供应商名称
	CategoryIds   string   `json:"categoryIds"`            // 商品类别大ids，xxx,xxx,xxx,xxx,xxx
	AreaName      string   `json:"areaName,optional"`      // 区域名
	AreaId        uint64   `json:"areaId,optional"`        // 区域Id
	CityName      string   `json:"cityName,optional"`      // 市名
	CityId        uint64   `json:"cityId,optional"`        // 市Id
	ProvinceName  string   `json:"provinceName,optional"`  // 省名
	ProvinceId    uint64   `json:"provinceId,optional"`    // 省Id
	StreetName    string   `json:"streetName,optional"`    // 乡镇名
	StreetId      uint64   `json:"streetId,optional"`      // 乡镇Id
	Address       string   `json:"address,optional"`       // 详细地址
	Longitude     string   `json:"longitude,optional"`     // 经度
	Latitude      string   `json:"latitude,optional"`      // 纬度
	ProviderPhone string   `json:"providerPhone,optional"` // 供应商电话
	Tags          []string `json:"tags,optional"`          // 标签
	Level         int64    `json:"level,optional"`         // 供应商等级
	LevelName     string   `json:"levelName,optional"`     // 供应商等级名称
	LevelId       uint64   `json:"levelId,optional"`       // 供应商等级id
	OrganizeId    uint64   `json:"organizeId,optional"`    // 组织机构id
}

type GetProviderToOpticianListReqForApi struct {
	Page         int64  `json:"page"`                  // 页码
	Size         int64  `json:"size"`                  // 每页数量
	ProviderName string `json:"providerName,optional"` // 供应商名称
}

type GetProviderToOpticianListRespForApi struct {
	Total                  int64                    `json:"total"`
	ProviderToOpticianList []ProviderToOpticianInfo `json:"providerToOpticianList"`
}
type GetProviderToOpticianListRespForApiResp struct {
	Data GetProviderToOpticianListRespForApi `json:"data"`
	Resp
}

type DeleteProviderToOpticianReqForApi struct {
	Id uint64 `json:"id"` // 眼镜店对应的供应商id
}

type ProviderToOpticianAuthInfo struct {
	AuthCode   string `json:"authCode"`   //授权码
	ProviderId int64  `json:"providerId"` //供应商id
}
